using System.Data.Entity.Migrations;
using Service.Model;
using Service.Model.Context;
using ServiceInterface.Model.Enum;

namespace Service.Migrations
{
    internal sealed class Configuration : DbMigrationsConfiguration<ServiceDbContext>
    {
        public Configuration()
        {
            AutomaticMigrationsEnabled = false;
        }

        protected override void Seed(ServiceDbContext context)
        {
            context.Heuristics.AddOrUpdate(h => h.HeuristicId,
                new Heuristic { HeuristicId = (int)HeuristicConstant.Heuristic1, HeuristicName = HeuristicConstant.Heuristic1.ToString() },
                new Heuristic { HeuristicId = (int)HeuristicConstant.Heuristic2, HeuristicName = HeuristicConstant.Heuristic2.ToString() },
                new Heuristic { HeuristicId = (int)HeuristicConstant.Heuristic3, HeuristicName = HeuristicConstant.Heuristic3.ToString() },
                new Heuristic { HeuristicId = (int)HeuristicConstant.Heuristic4, HeuristicName = HeuristicConstant.Heuristic4.ToString() },
                new Heuristic { HeuristicId = (int)HeuristicConstant.Heuristic5, HeuristicName = HeuristicConstant.Heuristic5.ToString() }
                );
            
            context.Openings.AddOrUpdate(o => new {o.FEN, o.Move},
                //1st white move
                new Opening() { Name = "King's Pawn", FEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq", Move = "e2e4" },
                new Opening() { Name = "Queen's Pawn", FEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq", Move = "d2d4" },
                new Opening() { Name = "Reti Opening", FEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq", Move = "g1f3" },
                new Opening() { Name = "English Opening", FEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq", Move = "c2c4" },
                new Opening() { Name = "Hungarian Opening", FEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq", Move = "g2g3" },

                //1st black move
                //King's Pawn
                new Opening() { Name = "Sicilian Defence", FEN = "rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq", Move = "c7c5" },
                new Opening() { Name = "King's Pawn Game", FEN = "rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq", Move = "e7e5" },
                new Opening() { Name = "French Defence", FEN = "rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq", Move = "e7e6" },
                new Opening() { Name = "Caro-Kann Defence", FEN = "rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq", Move = "c7c6" },
                new Opening() { Name = "Scandinavian Defence", FEN = "rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq", Move = "d7d5" },

                //Queen's Pawn
                new Opening() { Name = "Indian Game", FEN = "rnbqkbnr/pppppppp/8/8/3P4/8/PPP1PPPP/RNBQKBNR b KQkq", Move = "g8f6" },
                new Opening() { Name = "Queen's Pawn Game", FEN = "rnbqkbnr/pppppppp/8/8/3P4/8/PPP1PPPP/RNBQKBNR b KQkq", Move = "d7d5" },
                new Opening() { Name = "Dutch Defence", FEN = "rnbqkbnr/pppppppp/8/8/3P4/8/PPP1PPPP/RNBQKBNR b KQkq", Move = "f7f5" },
                new Opening() { Name = "Modern Defence", FEN = "rnbqkbnr/pppppppp/8/8/3P4/8/PPP1PPPP/RNBQKBNR b KQkq", Move = "g7g6" },

                //Reti Opening
                new Opening() { Name = "Reti Opening", FEN = "rnbqkbnr/pppppppp/8/8/8/5N2/PPPPPPPP/RNBQKB1R b KQkq", Move = "g8f6" },
                new Opening() { Name = "Reti Opening", FEN = "rnbqkbnr/pppppppp/8/8/8/5N2/PPPPPPPP/RNBQKB1R b KQkq", Move = "d7d5" },
                new Opening() { Name = "Zukertort Opening: Sicilian Invitation", FEN = "rnbqkbnr/pppppppp/8/8/8/5N2/PPPPPPPP/RNBQKB1R b KQkq", Move = "c7c5" },
                new Opening() { Name = "Zukertort Opening: Kingside Fianchetto", FEN = "rnbqkbnr/pppppppp/8/8/8/5N2/PPPPPPPP/RNBQKB1R b KQkq", Move = "g7g6" },

                //English Opening
                new Opening() { Name = "English Opening: Anglo-Indian Defence", FEN = "rnbqkbnr/pppppppp/8/8/2P5/8/PP1PPPPP/RNBQKBNR b KQkq", Move = "g8f6" },
                new Opening() { Name = "English Opening: King's English Variation", FEN = "rnbqkbnr/pppppppp/8/8/2P5/8/PP1PPPPP/RNBQKBNR b KQkq", Move = "e7e5" },

                //Hungarian Opening
                new Opening() { Name = "Hungarian Opening: Indian Defence", FEN = "rnbqkbnr/pppppppp/8/8/8/6P1/PPPPPP1P/RNBQKBNR b KQkq", Move = "g8f6" },
                new Opening() { Name = "Hungarian Opening: Queen's Pawn", FEN = "rnbqkbnr/pppppppp/8/8/8/6P1/PPPPPP1P/RNBQKBNR b KQkq", Move = "d7d5" },

                //2nd white move
                //Sicilian Defence
                new Opening() { Name = "Sicilian Defence", FEN = "rnbqkbnr/pp1ppppp/8/2p5/4P3/8/PPPP1PPP/RNBQKBNR w KQkq", Move = "g1f3" },
                new Opening() { Name = "Sicilian Defence: Closed Variation", FEN = "rnbqkbnr/pp1ppppp/8/2p5/4P3/8/PPPP1PPP/RNBQKBNR w KQkq", Move = "b1c3" },
                new Opening() { Name = "Sicilian Defence: Alapin Variation", FEN = "rnbqkbnr/pp1ppppp/8/2p5/4P3/8/PPPP1PPP/RNBQKBNR w KQkq", Move = "c2c3" },
                new Opening() { Name = "Sicilian Defence: Smith-Morra Gambit", FEN = "rnbqkbnr/pp1ppppp/8/2p5/4P3/8/PPPP1PPP/RNBQKBNR w KQkq", Move = "d2d4" },

                //King's Pawn Game
                new Opening() { Name = "King's Knight Opening", FEN = "rnbqkbnr/pppp1ppp/8/4p3/4P3/8/PPPP1PPP/RNBQKBNR w KQkq", Move = "g1f3" },
                new Opening() { Name = "Vienna Game", FEN = "rnbqkbnr/pppp1ppp/8/4p3/4P3/8/PPPP1PPP/RNBQKBNR w KQkq", Move = "b1c3" },
                new Opening() { Name = "King's Gambit", FEN = "rnbqkbnr/pppp1ppp/8/4p3/4P3/8/PPPP1PPP/RNBQKBNR w KQkq", Move = "f2f4" },
                new Opening() { Name = "Bishop's Opening", FEN = "rnbqkbnr/pppp1ppp/8/4p3/4P3/8/PPPP1PPP/RNBQKBNR w KQkq", Move = "f1c4" },

                //French Defence
                new Opening() { Name = "French Defence: Normal Variation", FEN = "rnbqkbnr/pppp1ppp/4p3/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq", Move = "d2d4" },
                new Opening() { Name = "French Defence: King's Indian Attack", FEN = "rnbqkbnr/pppp1ppp/4p3/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq", Move = "d2d3" },
                
                //Caro-Kann Defence
                new Opening() { Name = "Caro-Kann Defence", FEN = "rnbqkbnr/pp1ppppp/2p5/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq", Move = "d2d4" },
                new Opening() { Name = "Caro-Kann Defence: Accelerated Panov Attack", FEN = "rnbqkbnr/pp1ppppp/2p5/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq", Move = "c2c4" },
                new Opening() { Name = "Caro-Kann Defence", FEN = "rnbqkbnr/pp1ppppp/2p5/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq", Move = "b1c3" },

                //Scandinavian Defence
                new Opening() { Name = "Scandinavian Defence", FEN = "rnbqkbnr/ppp1pppp/8/3p4/4P3/8/PPPP1PPP/RNBQKBNR w KQkq", Move = "e4d5" },
                
                //Indian Game
                new Opening() { Name = "Indian Game: Normal Variation", FEN = "rnbqkb1r/pppppppp/5n2/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq", Move = "c2c4" },
                new Opening() { Name = "Indian Game: Knights Variation", FEN = "rnbqkb1r/pppppppp/5n2/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq", Move = "g1f3" },
                new Opening() { Name = "Trompowsky Attack", FEN = "rnbqkb1r/pppppppp/5n2/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq", Move = "f1g5" },

                //Queen's Pawn Game
                new Opening() { Name = "Queen's Gambit", FEN = "rnbqkbnr/ppp1pppp/8/3p4/3P4/8/PPP1PPPP/RNBQKBNR w KQkq", Move = "c2c4" },
                new Opening() { Name = "Queen's Pawn Game: Zukertort Variation", FEN = "rnbqkbnr/ppp1pppp/8/3p4/3P4/8/PPP1PPPP/RNBQKBNR w KQkq", Move = "g1f3" },

                //Dutch Defence
                new Opening() { Name = "Dutch Defence: Fianchetto Attack", FEN = "rnbqkbnr/ppppp1pp/8/5p2/3P4/8/PPP1PPPP/RNBQKBNR w KQkq", Move = "g2g3" },
                new Opening() { Name = "Dutch Defence", FEN = "rnbqkbnr/ppppp1pp/8/5p2/3P4/8/PPP1PPPP/RNBQKBNR w KQkq", Move = "g1f3" },
                new Opening() { Name = "Dutch Defence", FEN = "rnbqkbnr/ppppp1pp/8/5p2/3P4/8/PPP1PPPP/RNBQKBNR w KQkq", Move = "c2c4" },
                
                //Modern Defence
                new Opening() { Name = "Modern Defence", FEN = "rnbqkbnr/pppppp1p/6p1/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq", Move = "e2e4" },
                new Opening() { Name = "Modern Defence", FEN = "rnbqkbnr/pppppp1p/6p1/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq", Move = "c2c4" },
                new Opening() { Name = "Modern Defence", FEN = "rnbqkbnr/pppppp1p/6p1/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq", Move = "g1f3" },

                //Reti Opening (from Nf6)
                new Opening() { Name = "Torre Attack", FEN = "rnbqkb1r/pppppppp/5n2/8/8/5N2/PPPPPPPP/RNBQKB1R w KQkq", Move = "d2d4" },
                new Opening() { Name = "Reti Opening", FEN = "rnbqkb1r/pppppppp/5n2/8/8/5N2/PPPPPPPP/RNBQKB1R w KQkq", Move = "c2c4" },
                new Opening() { Name = "Reti Opening", FEN = "rnbqkb1r/pppppppp/5n2/8/8/5N2/PPPPPPPP/RNBQKB1R w KQkq", Move = "g2g3" },

                //Reti Opening (from d5)
                new Opening() { Name = "Reti Opening", FEN = "rnbqkbnr/ppp1pppp/8/3p4/8/5N2/PPPPPPPP/RNBQKB1R w KQkq", Move = "d2d4" },
                new Opening() { Name = "King's Indian Attack", FEN = "rnbqkbnr/ppp1pppp/8/3p4/8/5N2/PPPPPPPP/RNBQKB1R w KQkq", Move = "g2g3" },
                new Opening() { Name = "Reti Opening", FEN = "rnbqkbnr/ppp1pppp/8/3p4/8/5N2/PPPPPPPP/RNBQKB1R w KQkq", Move = "c2c4" },

                //Zukertort Opening: Sicilian Invitation
                new Opening() { Name = "Zukertort Opening: Sicilian Invitation", FEN = "rnbqkbnr/pp1ppppp/8/2p5/8/5N2/PPPPPPPP/RNBQKB1R w KQkq", Move = "e2e4" },
                new Opening() { Name = "Zukertort Opening: Sicilian Invitation", FEN = "rnbqkbnr/pp1ppppp/8/2p5/8/5N2/PPPPPPPP/RNBQKB1R w KQkq", Move = "c2c4" },
                new Opening() { Name = "Zukertort Opening: Sicilian Invitation", FEN = "rnbqkbnr/pp1ppppp/8/2p5/8/5N2/PPPPPPPP/RNBQKB1R w KQkq", Move = "g2g3" },

                //Zukertort Opening:Kingside Fianchetto
                new Opening() { Name = "Zukertort Opening:Kingside Fianchetto", FEN = "rnbqkbnr/pppppp1p/6p1/8/8/5N2/PPPPPPPP/RNBQKB1R w KQkq", Move = "d2d4" },
                new Opening() { Name = "Zukertort Opening:Kingside Fianchetto", FEN = "rnbqkbnr/pppppp1p/6p1/8/8/5N2/PPPPPPPP/RNBQKB1R w KQkq", Move = "c2c4" },

                //English Opening: Anglo-Indian Defence
                new Opening() { Name = "English Opening: Anglo-Indian Defence", FEN = "rnbqkb1r/pppppppp/5n2/8/2P5/8/PP1PPPPP/RNBQKBNR w KQkq", Move = "d2d4" },
                new Opening() { Name = "English Opening: Anglo-Indian Defence, King's Knight Variation", FEN = "rnbqkb1r/pppppppp/5n2/8/2P5/8/PP1PPPPP/RNBQKBNR w KQkq", Move = "g1f3" },
                new Opening() { Name = "English Opening: Anglo-Indian Defence, Queen's Knight Variation", FEN = "rnbqkb1r/pppppppp/5n2/8/2P5/8/PP1PPPPP/RNBQKBNR w KQkq", Move = "b1c3" },

                //English Opening: King's English Variation
                new Opening() { Name = "English Opening: King's English Variation, Reversed Sicilian", FEN = "rnbqkbnr/pppp1ppp/8/4p3/2P5/8/PP1PPPPP/RNBQKBNR w KQkq", Move = "b1c3" },
                new Opening() { Name = "English Opening: King's English Variation", FEN = "rnbqkbnr/pppp1ppp/8/4p3/2P5/8/PP1PPPPP/RNBQKBNR w KQkq", Move = "g2g3" },

                //Hungarian Opening: Indian Defence
                new Opening() { Name = "Hungarian Opening: Indian Defence", FEN = "rnbqkb1r/pppppppp/5n2/8/8/6P1/PPPPPP1P/RNBQKBNR w KQkq", Move = "g1f3" },
                new Opening() { Name = "Hungarian Opening: Indian Defence", FEN = "rnbqkb1r/pppppppp/5n2/8/8/6P1/PPPPPP1P/RNBQKBNR w KQkq", Move = "c2c4" },

                //Hungarian Opening: Queen's Pawn
                new Opening() { Name = "Hungarian Opening: Queen's Pawn", FEN = "rnbqkbnr/ppp1pppp/8/3p4/8/6P1/PPPPPP1P/RNBQKBNR w KQkq", Move = "g1f3" },
                new Opening() { Name = "Hungarian Opening: Queen's Pawn", FEN = "rnbqkbnr/ppp1pppp/8/3p4/8/6P1/PPPPPP1P/RNBQKBNR w KQkq", Move = "f1g2" },
                
                //2nd black move
                //Sicilian Defence
                new Opening() { Name = "Sicilian Defence", FEN = "rnbqkbnr/pp1ppppp/8/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq", Move = "d7d6" },
                new Opening() { Name = "Sicilian Defence: Old Sicilian", FEN = "rnbqkbnr/pp1ppppp/8/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq", Move = "b8c6" },
                new Opening() { Name = "Sicilian Defence: French Variation", FEN = "rnbqkbnr/pp1ppppp/8/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq", Move = "e7e6" },

                //Sicilian Defence: Closed Variation
                new Opening() { Name = "Sicilian Defence: Closed Variation, Traditional", FEN = "rnbqkbnr/pp1ppppp/8/2p5/4P3/2N5/PPPP1PPP/R1BQKBNR b KQkq", Move = "b8c6" },

                //Sicilian Defence: Alapin Variation
                new Opening() { Name = "Sicilian Defence: Alapin Variation", FEN = "rnbqkbnr/pp1ppppp/8/2p5/4P3/2P5/PP1P1PPP/RNBQKBNR b KQkq", Move = "g8f6" },
                new Opening() { Name = "Sicilian Defence: Alapin Variation", FEN = "rnbqkbnr/pp1ppppp/8/2p5/4P3/2P5/PP1P1PPP/RNBQKBNR b KQkq", Move = "d7d5" },

                //Sicilian Defence: Smith-Morra Gambit
                new Opening() { Name = "Sicilian Defence: Smith-Morra Gambit", FEN = "rnbqkbnr/pp1ppppp/8/2p5/3PP3/8/PPP2PPP/RNBQKBNR b KQkq", Move = "c5d4" },

                //King's Knight Opening
                new Opening() { Name = "King's Knight Opening: Normal Variation", FEN = "rnbqkbnr/pppp1ppp/8/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq", Move = "b8c6" },
                new Opening() { Name = "Petrov's Defence", FEN = "rnbqkbnr/pppp1ppp/8/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq", Move = "g8f6" },
                new Opening() { Name = "Philidor Defence", FEN = "rnbqkbnr/pppp1ppp/8/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq", Move = "d7d6" },

                //Vienna Game
                new Opening() { Name = "Vienna Game: Falkbeer Variation", FEN = "rnbqkbnr/pppp1ppp/8/4p3/4P3/2N5/PPPP1PPP/R1BQKBNR b KQkq", Move = "g8f6" },
                new Opening() { Name = "Vienna Game: Max Lange Defence", FEN = "rnbqkbnr/pppp1ppp/8/4p3/4P3/2N5/PPPP1PPP/R1BQKBNR b KQkq", Move = "b8c6" },
                
                //King's Gambit
                new Opening() { Name = "King's Gambit Accepted", FEN = "rnbqkbnr/pppp1ppp/8/4p3/4PP2/8/PPPP2PP/RNBQKBNR b KQkq", Move = "e5f4" },
                new Opening() { Name = "King's Gambit Declined: Falkbeer Countergambit", FEN = "rnbqkbnr/pppp1ppp/8/4p3/4PP2/8/PPPP2PP/RNBQKBNR b KQkq", Move = "d7d5" },
                new Opening() { Name = "King's Gambit Declined, Classical Variation", FEN = "rnbqkbnr/pppp1ppp/8/4p3/4PP2/8/PPPP2PP/RNBQKBNR b KQkq", Move = "f8c5" },

                //Bishop's Opening
                new Opening() { Name = "Bishop's Opening: Berlin Defence", FEN = "rnbqkbnr/pppp1ppp/8/4p3/2B1P3/8/PPPP1PPP/RNBQK1NR b KQkq", Move = "g8f6" },

                //French Defence: Normal Variation
                new Opening() { Name = "French Defence", FEN = "rnbqkbnr/pppp1ppp/4p3/8/3PP3/8/PPP2PPP/RNBQKBNR b KQkq", Move = "d7d5" },

                //French Defence: King's Indian Attack
                new Opening() { Name = "French Defence: King's Indian Attack", FEN = "rnbqkbnr/pppp1ppp/4p3/8/4P3/3P4/PPP2PPP/RNBQKBNR b KQkq", Move = "d7d5" },
                new Opening() { Name = "French Defence: King's Indian Attack", FEN = "rnbqkbnr/pppp1ppp/4p3/8/4P3/3P4/PPP2PPP/RNBQKBNR b KQkq", Move = "c7c5" },
                
                //Caro-Kann Defence (from d4)
                new Opening() { Name = "Caro-Kann Defence", FEN = "rnbqkbnr/pp1ppppp/2p5/8/3PP3/8/PPP2PPP/RNBQKBNR b KQkq", Move = "d7d5" },

                //Caro-Kann Defence: Accelerated Panov Attack
                new Opening() { Name = "Caro-Kann Defence: Accelerated Panov Attack", FEN = "rnbqkbnr/pp2pppp/2p5/3p4/2P1P3/8/PP1P1PPP/RNBQKBNR w KQkq", Move = "d7d5" },
               
                //Caro-Kann Defence (from Nc3)
                new Opening() { Name = "Caro-Kann Defence", FEN = "rnbqkbnr/pp1ppppp/2p5/8/4P3/2N5/PPPP1PPP/R1BQKBNR b KQkq", Move = "d7d5" },

                //Scandinavian Defence
                new Opening() { Name = "Scandinavian Defence: Mieses-Kotroc Variation", FEN = "rnbqkbnr/ppp1pppp/8/3P4/8/8/PPPP1PPP/RNBQKBNR b KQkq", Move = "d8d5" },
                new Opening() { Name = "Scandinavian Defence: Modern variation", FEN = "rnbqkbnr/ppp1pppp/8/3P4/8/8/PPPP1PPP/RNBQKBNR b KQkq", Move = "g8f6" },

                //Indian Game: Normal Variation
                new Opening() { Name = "Indian Game: East Indian Defence", FEN = "rnbqkb1r/pppppppp/5n2/8/2PP4/8/PP2PPPP/RNBQKBNR b KQkq", Move = "d7e6" },
                new Opening() { Name = "Indian Game: West Indian Defence", FEN = "rnbqkb1r/pppppppp/5n2/8/2PP4/8/PP2PPPP/RNBQKBNR b KQkq", Move = "g7g6" },
                new Opening() { Name = "Benoni Defence", FEN = "rnbqkb1r/pppppppp/5n2/8/2PP4/8/PP2PPPP/RNBQKBNR b KQkq", Move = "c7c5" },

                //Indian Game: Knights Variation
                new Opening() { Name = "East Indian Defence", FEN = "rnbqkb1r/pppppppp/5n2/8/3P4/5N2/PPP1PPPP/RNBQKB1R b KQkq", Move = "g7g6" },
                new Opening() { Name = "Indian Game: Knights Variation", FEN = "rnbqkb1r/pppppppp/5n2/8/3P4/5N2/PPP1PPPP/RNBQKB1R b KQkq", Move = "d7d5" },
                new Opening() { Name = "Indian Game: Knights Variation", FEN = "rnbqkb1r/pppppppp/5n2/8/3P4/5N2/PPP1PPPP/RNBQKB1R b KQkq", Move = "e7e6" },

                //Queen's Gambit
                new Opening() { Name = "Slav Defence", FEN = "rnbqkbnr/ppp1pppp/8/3p4/2PP4/8/PP2PPPP/RNBQKBNR b KQkq", Move = "c7c6" },
                new Opening() { Name = "Queen's Gambit Declined", FEN = "rnbqkbnr/ppp1pppp/8/3p4/2PP4/8/PP2PPPP/RNBQKBNR b KQkq", Move = "e7e6" },
                new Opening() { Name = "Queen's Gambit Accepted", FEN = "rnbqkbnr/ppp1pppp/8/3p4/2PP4/8/PP2PPPP/RNBQKBNR b KQkq", Move = "d5c4" },
                
                //Queen's Pawn Game: Zukertort Variation
                new Opening() { Name = "Queen's Pawn Game: Symmetrical Variation", FEN = "rnbqkbnr/ppp1pppp/8/3p4/3P4/5N2/PPP1PPPP/RNBQKB1R b KQkq", Move = "g8f6" },

                //Dutch Defence: Fianchetto Attack
                new Opening() { Name = "Dutch Defence: Fianchetto Attack", FEN = "rnbqkbnr/ppppp1pp/8/5p2/3P4/6P1/PPP1PP1P/RNBQKBNR b KQkq", Move = "g8f6" },

                //Dutch Defence (from Nf3)
                new Opening() { Name = "Dutch Defence", FEN = "rnbqkbnr/ppppp1pp/8/5p2/3P4/5N2/PPP1PPPP/RNBQKB1R b KQkq", Move = "g8f6" },

                //Dutch Defence (from c4)
                new Opening() { Name = "Dutch Defence: Classical Variation", FEN = "rnbqkbnr/ppppp1pp/8/5p2/2PP4/8/PP2PPPP/RNBQKBNR b KQkq", Move = "d7e6" },
                new Opening() { Name = "Dutch Defence: Normal Variation", FEN = "rnbqkbnr/ppppp1pp/8/5p2/2PP4/8/PP2PPPP/RNBQKBNR b KQkq", Move = "g8f6" },

                //Modern Defence (from e4)
                new Opening() { Name = "Modern Defence", FEN = "rnbqkbnr/pppppp1p/6p1/8/3PP3/8/PPP2PPP/RNBQKBNR b KQkq", Move = "f8g7" },

                //Modern Defence (from c4)
                new Opening() { Name = "Modern Defence", FEN = "rnbqkbnr/pppppp1p/6p1/8/2PP4/8/PP2PPPP/RNBQKBNR b KQkq", Move = "g8f6" },

                //Modern Defence (from Nf3)
                new Opening() { Name = "Modern Defence", FEN = "rnbqkbnr/pppppp1p/6p1/8/3P4/5N2/PPP1PPPP/RNBQKB1R b KQkq", Move = "g8f6" },

                //Torre Attack
                //Same as Indian Game: Knights Variation

                //Reti Opening (from c4)
                new Opening() { Name = "Reti Opening", FEN = "rnbqkb1r/pppppppp/5n2/8/2P5/5N2/PP1PPPPP/RNBQKB1R b KQkq", Move = "g7g6" },
                new Opening() { Name = "Reti Opening", FEN = "rnbqkb1r/pppppppp/5n2/8/2P5/5N2/PP1PPPPP/RNBQKB1R b KQkq", Move = "e7e6" },
                new Opening() { Name = "Reti Opening", FEN = "rnbqkb1r/pppppppp/5n2/8/2P5/5N2/PP1PPPPP/RNBQKB1R b KQkq", Move = "c7c5" },

                //Reti Opening (from g3)
                new Opening() { Name = "King's Indian Attack: Yugoslav Variation", FEN = "rnbqkb1r/pppppppp/5n2/8/8/5NP1/PPPPPP1P/RNBQKB1R b KQkq", Move = "d7d5" },
                new Opening() { Name = "King's Indian Attack: Symmetrical Defence", FEN = "rnbqkb1r/pppppppp/5n2/8/8/5NP1/PPPPPP1P/RNBQKB1R b KQkq", Move = "g7g6" },

                //Reti Opening (from d4)
                //Same as Queen's Pawn Game: Zukertort Variation

                //King's Indian Attack
                new Opening() { Name = "King's Indian Attack: Yugoslav Variation", FEN = "rnbqkbnr/ppp1pppp/8/3p4/8/5NP1/PPPPPP1P/RNBQKB1R b KQkq", Move = "g8f6" },
                
                //Reti Opening
                new Opening() { Name = "Reti Opening", FEN = "rnbqkbnr/ppp1pppp/8/3p4/2P5/5N2/PP1PPPPP/RNBQKB1R b KQkq", Move = "e7e6" },
                new Opening() { Name = "Reti Opening", FEN = "rnbqkbnr/ppp1pppp/8/3p4/2P5/5N2/PP1PPPPP/RNBQKB1R b KQkq", Move = "c7c6" },

                //Zukertort Opening: Sicilian Invitation (from e4)
                //Same as Sicilian Defence

                //Zukertort Opening: Sicilian Invitation (from c4)
                new Opening() { Name = "Zukertort Opening: Sicilian Invitation Declined", FEN = "rnbqkbnr/pp1ppppp/8/2p5/2P5/5N2/PP1PPPPP/RNBQKB1R b KQkq", Move = "g8f6" },

                //Zukertort Opening: Sicilian Invitation (from g3)
                new Opening() { Name = "Zukertort Opening: Sicilian Invitation Declined", FEN = "rnbqkbnr/pp1ppppp/8/2p5/8/5NP1/PPPPPP1P/RNBQKB1R b KQkq", Move = "b8c6" },

                //Zukertort Opening: Kingside Fianchetto (from d4)
                //Same as modern Defence

                //Zukertort Opening: Kingside Fianchetto (from c4)
                new Opening() { Name = "Zukertort Opening: Kingside Fianchetto", FEN = "rnbqkbnr/pppppp1p/6p1/8/2P5/5N2/PP1PPPPP/RNBQKB1R b KQkq", Move = "g8f6" },
                
                //English Opening: Anglo-Indian Defence
                //Same as Indian Game: Normal Variation

                //English Opening: Anglo-Indian Defence, King's Knight Variation
                //Same as Reti Opening (from c4)

                //English Opening: Anglo-Indian Defence, Queen's Knight Variation
                new Opening() { Name = "English Opening: Anglo-Indian Defence, Queen's Knight Variation", FEN = "rnbqkb1r/pppppppp/5n2/8/2P5/2N5/PP1PPPPP/R1BQKBNR b KQkq", Move = "e7e5" },
                new Opening() { Name = "English Opening: Anglo-Indian Defence, Queen's Knight Variation", FEN = "rnbqkb1r/pppppppp/5n2/8/2P5/2N5/PP1PPPPP/R1BQKBNR b KQkq", Move = "g7g6" },

                //Hungarian Opening: Indian Defence (from Nf3)
                //Same as Reti Opening (from g3)

                //Hungarian Opening: Indian Defence (from c4)
                new Opening() { Name = "Hungarian Opening: Indian Defence", FEN = "rnbqkb1r/pppppppp/5n2/8/2P5/6P1/PP1PPP1P/RNBQKBNR b KQkq", Move = "e7e5" },

                //Hungarian Opening: Queen's Pawn (from Nf3)
                //Same as King's Indian Attack

                //Hungarian Opening: Queen's Pawn (from Bg2)
                new Opening() { Name = "Hungarian Opening: Queen's Pawn", FEN = "rnbqkbnr/ppp1pppp/8/3p4/8/6P1/PPPPPPBP/RNBQK1NR b KQkq", Move = "g8f6" }
                

                //3rd white move

                //Openings to continue:
                //4 knight game
                //Ruy Lopez
                //Silician Defence
                //Queen's Gambit
                //The Alekhine defence
                //The Modern Defence
                //The King's Indian Defence
                //The King's Indian Attack

                //Maybe:
                //Stonewall Attack
                //Dutch Defence
                //English Opening
                //King's Gambit
            );
        }
    }
}
